#define _CRT_SECURE_NO_WARNINGS 1
//
//#include <iostream>
//using namespace std;

//template<typename T>
//auto Add(const T left, const T  right)
//{
//	cout << "T Add(const T& left, const T& right)" << endl;
//
//	return left + right;
//}
//int main()
//{
//	int a = 2.2;
//	Add(1, a);
//	return 0;
//}





//void Swap(int& left, int& right)
//{
//	cout << " void Swap(int& left, int& right) " << endl;
//	int tmp = left;
//	left = right;
//	right = tmp;
//}
//
//template<class T>
//void Swap(T& left,  T& right)
//{
//	T tmp = left;
//	left = right;
//	right = tmp;
//}
//template<class T1,class T2>
//auto Add(const T1 left,const T2 right)
//{
//	return left + right;
//}


//
//template<typename T>
//class A
//{
//private :
//	T _arr;
//	int _size;
//	int _capacity;
//};

//#include <iostream>
//using namespace std;
//
//int Add(int left,int right)
//{
//	cout << "int Add(int left,int right)" << endl;
//	return left + right;
//}
//template<class T>
//T Add(T left, T right)
//{
//	cout << "T Add(T left, T right)" << endl;
//	return left + right;
//}
//template<class T1,class T2>
//auto Add(T1 left, T2 right)
//{
//	cout << "auto Add(T1 left, T2 right)" << endl;
//	return left + right;
//}
//int main()
//{
//	Add(1, 2);
//	Add<int>(1, 2);
//	Add(1.1, 2);
//	Add(1.1, 2.2);
//	Add<int,double>(1.1, 2.2);
//
//	return 0;
//}

#include <iostream>
#include <stack>
#include <typeinfo>
using namespace std;

template<class T>
class A
{
public:
	///...
private:
	T* _arr;
	int _top;
	int _capacity;
};
int main()
{
	stack<int> s1;
	cout << typeid(s1).name() << endl;
	return 0;
}